/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import java.util.List;
import model.Correspondencia;
import org.hibernate.JDBCException;
import org.hibernate.Session;
import util.HibernateUtil;

/**
 *
 * @author Wagner Segato dos Santos
 */
public class CorrespondenciaDAO {

    // Atributo
    private static Session session;

    // Construtor padrão
    public CorrespondenciaDAO() {
    }

    /** Inserir registro no banco de dados */
    public static void inserir(Correspondencia correspondencia) throws Exception {
        try {
            session = HibernateUtil.getSessionFactory().openSession();
            session.beginTransaction();
            session.save(correspondencia);
            session.getTransaction().commit();
        } catch (JDBCException e) {
            throw new Exception(e.getSQLException());
        } finally {
            session.close();
        }
    }

    /** Atualizar registro do banco de dados */
    public static void atualizar(Correspondencia correspondencia) throws Exception {
        try {
            session = HibernateUtil.getSessionFactory().openSession();
            session.beginTransaction();
            session.update(correspondencia);
            session.getTransaction().commit();
        } catch (JDBCException e) {
            throw new Exception(e.getSQLException());
        } finally {
            session.close();
        }
    }

    /** Excluir registro do banco de dados */
    public static void excluir(Correspondencia correspondencia) throws Exception {
        try {
            session = HibernateUtil.getSessionFactory().openSession();
            session.beginTransaction();
            session.delete(correspondencia);
            session.getTransaction().commit();
        } catch (JDBCException e) {
            throw new Exception(e.getSQLException());
        } finally {
            session.close();
        }
    }

    /** Pegar registro do banco de dados por ID */
    public static Correspondencia getCorrespondencia(int id) throws Exception {
        try {
            session = HibernateUtil.getSessionFactory().openSession();
            Correspondencia correspondencia = (Correspondencia) session.get(Correspondencia.class, new Integer(id));
            return correspondencia;
        } catch (JDBCException e) {
            throw new Exception(e.getSQLException());
        } finally {
            session.close();
        }
    }

    /** Pegar lista contendo todos os registros do banco de dados  */
    public static List<Correspondencia> getListaCorrespondencia() throws Exception {
        try {
            session = HibernateUtil.getSessionFactory().openSession();
            List<Correspondencia> correspondencias = session.createQuery("FROM Correspondencia").list();
            return correspondencias;
        } catch (JDBCException e) {
            throw new Exception(e.getSQLException());
        } finally {
            session.close();
        }
    }
}
